package proto;

import bintalk.BinTalkUtil.ReaderStream;
import bintalk.BinTalkUtil.WriterStream;
import bintalk.IBinTalk;
import bintalk.ProtocolReader;
import bintalk.ProtocolWriter;

import java.util.ArrayList;
import java.util.List;

public class Import {

    public enum EnumName {
        EN1,
        EN2,
        EN3;

        public static final int EN1_VALUE = 0;
        public static final int EN2_VALUE = 1;
        public static final int EN3_VALUE = 2;
    }

    public enum EnumName16 {
        EN16_A01,
        EN16_A02,
        EN16_A03,
        EN16_A04,
        EN16_A05,
        EN16_A06,
        EN16_A07,
        EN16_A08,
        EN16_A11,
        EN16_A12,
        EN16_A13,
        EN16_A14,
        EN16_A15,
        EN16_A16,
        EN16_A17,
        EN16_A18,
        EN16_A21,
        EN16_A22,
        EN16_A23,
        EN16_A24,
        EN16_A25,
        EN16_A26,
        EN16_A27,
        EN16_A28,
        EN16_A31,
        EN16_A32,
        EN16_A33,
        EN16_A34,
        EN16_A35,
        EN16_A36,
        EN16_A37,
        EN16_A38,
        EN16_A41,
        EN16_A42,
        EN16_A43,
        EN16_A44,
        EN16_A45,
        EN16_A46,
        EN16_A47,
        EN16_A48,
        EN16_A51,
        EN16_A52,
        EN16_A53,
        EN16_A54,
        EN16_A55,
        EN16_A56,
        EN16_A57,
        EN16_A58,
        EN16_A61,
        EN16_A62,
        EN16_A63,
        EN16_A64,
        EN16_A65,
        EN16_A66,
        EN16_A67,
        EN16_A68,
        EN16_A71,
        EN16_A72,
        EN16_A73,
        EN16_A74,
        EN16_A75,
        EN16_A76,
        EN16_A77,
        EN16_A78,
        EN16_B01,
        EN16_B02,
        EN16_B03,
        EN16_B04,
        EN16_B05,
        EN16_B06,
        EN16_B07,
        EN16_B08,
        EN16_B11,
        EN16_B12,
        EN16_B13,
        EN16_B14,
        EN16_B15,
        EN16_B16,
        EN16_B17,
        EN16_B18,
        EN16_B21,
        EN16_B22,
        EN16_B23,
        EN16_B24,
        EN16_B25,
        EN16_B26,
        EN16_B27,
        EN16_B28,
        EN16_B31,
        EN16_B32,
        EN16_B33,
        EN16_B34,
        EN16_B35,
        EN16_B36,
        EN16_B37,
        EN16_B38,
        EN16_B41,
        EN16_B42,
        EN16_B43,
        EN16_B44,
        EN16_B45,
        EN16_B46,
        EN16_B47,
        EN16_B48,
        EN16_B51,
        EN16_B52,
        EN16_B53,
        EN16_B54,
        EN16_B55,
        EN16_B56,
        EN16_B57,
        EN16_B58,
        EN16_B61,
        EN16_B62,
        EN16_B63,
        EN16_B64,
        EN16_B65,
        EN16_B66,
        EN16_B67,
        EN16_B68,
        EN16_B71,
        EN16_B72,
        EN16_B73,
        EN16_B74,
        EN16_B75,
        EN16_B76,
        EN16_B77,
        EN16_B78,
        EN16_C01,
        EN16_C02,
        EN16_C03,
        EN16_C04,
        EN16_C05,
        EN16_C06,
        EN16_C07,
        EN16_C08,
        EN16_C11,
        EN16_C12,
        EN16_C13,
        EN16_C14,
        EN16_C15,
        EN16_C16,
        EN16_C17,
        EN16_C18,
        EN16_C21,
        EN16_C22,
        EN16_C23,
        EN16_C24,
        EN16_C25,
        EN16_C26,
        EN16_C27,
        EN16_C28,
        EN16_C31,
        EN16_C32,
        EN16_C33,
        EN16_C34,
        EN16_C35,
        EN16_C36,
        EN16_C37,
        EN16_C38,
        EN16_C41,
        EN16_C42,
        EN16_C43,
        EN16_C44,
        EN16_C45,
        EN16_C46,
        EN16_C47,
        EN16_C48,
        EN16_C51,
        EN16_C52,
        EN16_C53,
        EN16_C54,
        EN16_C55,
        EN16_C56,
        EN16_C57,
        EN16_C58,
        EN16_C61,
        EN16_C62,
        EN16_C63,
        EN16_C64,
        EN16_C65,
        EN16_C66,
        EN16_C67,
        EN16_C68,
        EN16_C71,
        EN16_C72,
        EN16_C73,
        EN16_C74,
        EN16_C75,
        EN16_C76,
        EN16_C77,
        EN16_C78,
        EN16_D01,
        EN16_D02,
        EN16_D03,
        EN16_D04,
        EN16_D05,
        EN16_D06,
        EN16_D07,
        EN16_D08,
        EN16_D11,
        EN16_D12,
        EN16_D13,
        EN16_D14,
        EN16_D15,
        EN16_D16,
        EN16_D17,
        EN16_D18,
        EN16_D21,
        EN16_D22,
        EN16_D23,
        EN16_D24,
        EN16_D25,
        EN16_D26,
        EN16_D27,
        EN16_D28,
        EN16_D31,
        EN16_D32,
        EN16_D33,
        EN16_D34,
        EN16_D35,
        EN16_D36,
        EN16_D37,
        EN16_D38,
        EN16_D41,
        EN16_D42,
        EN16_D43,
        EN16_D44,
        EN16_D45,
        EN16_D46,
        EN16_D47,
        EN16_D48,
        EN16_D51,
        EN16_D52,
        EN16_D53,
        EN16_D54,
        EN16_D55,
        EN16_D56,
        EN16_D57,
        EN16_D58,
        EN16_D61,
        EN16_D62,
        EN16_D63,
        EN16_D64,
        EN16_D65,
        EN16_D66,
        EN16_D67,
        EN16_D68,
        EN16_D71,
        EN16_D72,
        EN16_D73,
        EN16_D74,
        EN16_D75,
        EN16_D76,
        EN16_D77,
        EN16_D78,
        MAX;

        public static final int EN16_A01_VALUE = 0;
        public static final int EN16_A02_VALUE = 1;
        public static final int EN16_A03_VALUE = 2;
        public static final int EN16_A04_VALUE = 3;
        public static final int EN16_A05_VALUE = 4;
        public static final int EN16_A06_VALUE = 5;
        public static final int EN16_A07_VALUE = 6;
        public static final int EN16_A08_VALUE = 7;
        public static final int EN16_A11_VALUE = 8;
        public static final int EN16_A12_VALUE = 9;
        public static final int EN16_A13_VALUE = 10;
        public static final int EN16_A14_VALUE = 11;
        public static final int EN16_A15_VALUE = 12;
        public static final int EN16_A16_VALUE = 13;
        public static final int EN16_A17_VALUE = 14;
        public static final int EN16_A18_VALUE = 15;
        public static final int EN16_A21_VALUE = 16;
        public static final int EN16_A22_VALUE = 17;
        public static final int EN16_A23_VALUE = 18;
        public static final int EN16_A24_VALUE = 19;
        public static final int EN16_A25_VALUE = 20;
        public static final int EN16_A26_VALUE = 21;
        public static final int EN16_A27_VALUE = 22;
        public static final int EN16_A28_VALUE = 23;
        public static final int EN16_A31_VALUE = 24;
        public static final int EN16_A32_VALUE = 25;
        public static final int EN16_A33_VALUE = 26;
        public static final int EN16_A34_VALUE = 27;
        public static final int EN16_A35_VALUE = 28;
        public static final int EN16_A36_VALUE = 29;
        public static final int EN16_A37_VALUE = 30;
        public static final int EN16_A38_VALUE = 31;
        public static final int EN16_A41_VALUE = 32;
        public static final int EN16_A42_VALUE = 33;
        public static final int EN16_A43_VALUE = 34;
        public static final int EN16_A44_VALUE = 35;
        public static final int EN16_A45_VALUE = 36;
        public static final int EN16_A46_VALUE = 37;
        public static final int EN16_A47_VALUE = 38;
        public static final int EN16_A48_VALUE = 39;
        public static final int EN16_A51_VALUE = 40;
        public static final int EN16_A52_VALUE = 41;
        public static final int EN16_A53_VALUE = 42;
        public static final int EN16_A54_VALUE = 43;
        public static final int EN16_A55_VALUE = 44;
        public static final int EN16_A56_VALUE = 45;
        public static final int EN16_A57_VALUE = 46;
        public static final int EN16_A58_VALUE = 47;
        public static final int EN16_A61_VALUE = 48;
        public static final int EN16_A62_VALUE = 49;
        public static final int EN16_A63_VALUE = 50;
        public static final int EN16_A64_VALUE = 51;
        public static final int EN16_A65_VALUE = 52;
        public static final int EN16_A66_VALUE = 53;
        public static final int EN16_A67_VALUE = 54;
        public static final int EN16_A68_VALUE = 55;
        public static final int EN16_A71_VALUE = 56;
        public static final int EN16_A72_VALUE = 57;
        public static final int EN16_A73_VALUE = 58;
        public static final int EN16_A74_VALUE = 59;
        public static final int EN16_A75_VALUE = 60;
        public static final int EN16_A76_VALUE = 61;
        public static final int EN16_A77_VALUE = 62;
        public static final int EN16_A78_VALUE = 63;
        public static final int EN16_B01_VALUE = 64;
        public static final int EN16_B02_VALUE = 65;
        public static final int EN16_B03_VALUE = 66;
        public static final int EN16_B04_VALUE = 67;
        public static final int EN16_B05_VALUE = 68;
        public static final int EN16_B06_VALUE = 69;
        public static final int EN16_B07_VALUE = 70;
        public static final int EN16_B08_VALUE = 71;
        public static final int EN16_B11_VALUE = 72;
        public static final int EN16_B12_VALUE = 73;
        public static final int EN16_B13_VALUE = 74;
        public static final int EN16_B14_VALUE = 75;
        public static final int EN16_B15_VALUE = 76;
        public static final int EN16_B16_VALUE = 77;
        public static final int EN16_B17_VALUE = 78;
        public static final int EN16_B18_VALUE = 79;
        public static final int EN16_B21_VALUE = 80;
        public static final int EN16_B22_VALUE = 81;
        public static final int EN16_B23_VALUE = 82;
        public static final int EN16_B24_VALUE = 83;
        public static final int EN16_B25_VALUE = 84;
        public static final int EN16_B26_VALUE = 85;
        public static final int EN16_B27_VALUE = 86;
        public static final int EN16_B28_VALUE = 87;
        public static final int EN16_B31_VALUE = 88;
        public static final int EN16_B32_VALUE = 89;
        public static final int EN16_B33_VALUE = 90;
        public static final int EN16_B34_VALUE = 91;
        public static final int EN16_B35_VALUE = 92;
        public static final int EN16_B36_VALUE = 93;
        public static final int EN16_B37_VALUE = 94;
        public static final int EN16_B38_VALUE = 95;
        public static final int EN16_B41_VALUE = 96;
        public static final int EN16_B42_VALUE = 97;
        public static final int EN16_B43_VALUE = 98;
        public static final int EN16_B44_VALUE = 99;
        public static final int EN16_B45_VALUE = 100;
        public static final int EN16_B46_VALUE = 101;
        public static final int EN16_B47_VALUE = 102;
        public static final int EN16_B48_VALUE = 103;
        public static final int EN16_B51_VALUE = 104;
        public static final int EN16_B52_VALUE = 105;
        public static final int EN16_B53_VALUE = 106;
        public static final int EN16_B54_VALUE = 107;
        public static final int EN16_B55_VALUE = 108;
        public static final int EN16_B56_VALUE = 109;
        public static final int EN16_B57_VALUE = 110;
        public static final int EN16_B58_VALUE = 111;
        public static final int EN16_B61_VALUE = 112;
        public static final int EN16_B62_VALUE = 113;
        public static final int EN16_B63_VALUE = 114;
        public static final int EN16_B64_VALUE = 115;
        public static final int EN16_B65_VALUE = 116;
        public static final int EN16_B66_VALUE = 117;
        public static final int EN16_B67_VALUE = 118;
        public static final int EN16_B68_VALUE = 119;
        public static final int EN16_B71_VALUE = 120;
        public static final int EN16_B72_VALUE = 121;
        public static final int EN16_B73_VALUE = 122;
        public static final int EN16_B74_VALUE = 123;
        public static final int EN16_B75_VALUE = 124;
        public static final int EN16_B76_VALUE = 125;
        public static final int EN16_B77_VALUE = 126;
        public static final int EN16_B78_VALUE = 127;
        public static final int EN16_C01_VALUE = 128;
        public static final int EN16_C02_VALUE = 129;
        public static final int EN16_C03_VALUE = 130;
        public static final int EN16_C04_VALUE = 131;
        public static final int EN16_C05_VALUE = 132;
        public static final int EN16_C06_VALUE = 133;
        public static final int EN16_C07_VALUE = 134;
        public static final int EN16_C08_VALUE = 135;
        public static final int EN16_C11_VALUE = 136;
        public static final int EN16_C12_VALUE = 137;
        public static final int EN16_C13_VALUE = 138;
        public static final int EN16_C14_VALUE = 139;
        public static final int EN16_C15_VALUE = 140;
        public static final int EN16_C16_VALUE = 141;
        public static final int EN16_C17_VALUE = 142;
        public static final int EN16_C18_VALUE = 143;
        public static final int EN16_C21_VALUE = 144;
        public static final int EN16_C22_VALUE = 145;
        public static final int EN16_C23_VALUE = 146;
        public static final int EN16_C24_VALUE = 147;
        public static final int EN16_C25_VALUE = 148;
        public static final int EN16_C26_VALUE = 149;
        public static final int EN16_C27_VALUE = 150;
        public static final int EN16_C28_VALUE = 151;
        public static final int EN16_C31_VALUE = 152;
        public static final int EN16_C32_VALUE = 153;
        public static final int EN16_C33_VALUE = 154;
        public static final int EN16_C34_VALUE = 155;
        public static final int EN16_C35_VALUE = 156;
        public static final int EN16_C36_VALUE = 157;
        public static final int EN16_C37_VALUE = 158;
        public static final int EN16_C38_VALUE = 159;
        public static final int EN16_C41_VALUE = 160;
        public static final int EN16_C42_VALUE = 161;
        public static final int EN16_C43_VALUE = 162;
        public static final int EN16_C44_VALUE = 163;
        public static final int EN16_C45_VALUE = 164;
        public static final int EN16_C46_VALUE = 165;
        public static final int EN16_C47_VALUE = 166;
        public static final int EN16_C48_VALUE = 167;
        public static final int EN16_C51_VALUE = 168;
        public static final int EN16_C52_VALUE = 169;
        public static final int EN16_C53_VALUE = 170;
        public static final int EN16_C54_VALUE = 171;
        public static final int EN16_C55_VALUE = 172;
        public static final int EN16_C56_VALUE = 173;
        public static final int EN16_C57_VALUE = 174;
        public static final int EN16_C58_VALUE = 175;
        public static final int EN16_C61_VALUE = 176;
        public static final int EN16_C62_VALUE = 177;
        public static final int EN16_C63_VALUE = 178;
        public static final int EN16_C64_VALUE = 179;
        public static final int EN16_C65_VALUE = 180;
        public static final int EN16_C66_VALUE = 181;
        public static final int EN16_C67_VALUE = 182;
        public static final int EN16_C68_VALUE = 183;
        public static final int EN16_C71_VALUE = 184;
        public static final int EN16_C72_VALUE = 185;
        public static final int EN16_C73_VALUE = 186;
        public static final int EN16_C74_VALUE = 187;
        public static final int EN16_C75_VALUE = 188;
        public static final int EN16_C76_VALUE = 189;
        public static final int EN16_C77_VALUE = 190;
        public static final int EN16_C78_VALUE = 191;
        public static final int EN16_D01_VALUE = 192;
        public static final int EN16_D02_VALUE = 193;
        public static final int EN16_D03_VALUE = 194;
        public static final int EN16_D04_VALUE = 195;
        public static final int EN16_D05_VALUE = 196;
        public static final int EN16_D06_VALUE = 197;
        public static final int EN16_D07_VALUE = 198;
        public static final int EN16_D08_VALUE = 199;
        public static final int EN16_D11_VALUE = 200;
        public static final int EN16_D12_VALUE = 201;
        public static final int EN16_D13_VALUE = 202;
        public static final int EN16_D14_VALUE = 203;
        public static final int EN16_D15_VALUE = 204;
        public static final int EN16_D16_VALUE = 205;
        public static final int EN16_D17_VALUE = 206;
        public static final int EN16_D18_VALUE = 207;
        public static final int EN16_D21_VALUE = 208;
        public static final int EN16_D22_VALUE = 209;
        public static final int EN16_D23_VALUE = 210;
        public static final int EN16_D24_VALUE = 211;
        public static final int EN16_D25_VALUE = 212;
        public static final int EN16_D26_VALUE = 213;
        public static final int EN16_D27_VALUE = 214;
        public static final int EN16_D28_VALUE = 215;
        public static final int EN16_D31_VALUE = 216;
        public static final int EN16_D32_VALUE = 217;
        public static final int EN16_D33_VALUE = 218;
        public static final int EN16_D34_VALUE = 219;
        public static final int EN16_D35_VALUE = 220;
        public static final int EN16_D36_VALUE = 221;
        public static final int EN16_D37_VALUE = 222;
        public static final int EN16_D38_VALUE = 223;
        public static final int EN16_D41_VALUE = 224;
        public static final int EN16_D42_VALUE = 225;
        public static final int EN16_D43_VALUE = 226;
        public static final int EN16_D44_VALUE = 227;
        public static final int EN16_D45_VALUE = 228;
        public static final int EN16_D46_VALUE = 229;
        public static final int EN16_D47_VALUE = 230;
        public static final int EN16_D48_VALUE = 231;
        public static final int EN16_D51_VALUE = 232;
        public static final int EN16_D52_VALUE = 233;
        public static final int EN16_D53_VALUE = 234;
        public static final int EN16_D54_VALUE = 235;
        public static final int EN16_D55_VALUE = 236;
        public static final int EN16_D56_VALUE = 237;
        public static final int EN16_D57_VALUE = 238;
        public static final int EN16_D58_VALUE = 239;
        public static final int EN16_D61_VALUE = 240;
        public static final int EN16_D62_VALUE = 241;
        public static final int EN16_D63_VALUE = 242;
        public static final int EN16_D64_VALUE = 243;
        public static final int EN16_D65_VALUE = 244;
        public static final int EN16_D66_VALUE = 245;
        public static final int EN16_D67_VALUE = 246;
        public static final int EN16_D68_VALUE = 247;
        public static final int EN16_D71_VALUE = 248;
        public static final int EN16_D72_VALUE = 249;
        public static final int EN16_D73_VALUE = 250;
        public static final int EN16_D74_VALUE = 251;
        public static final int EN16_D75_VALUE = 252;
        public static final int EN16_D76_VALUE = 253;
        public static final int EN16_D77_VALUE = 254;
        public static final int EN16_D78_VALUE = 255;
        public static final int MAX_VALUE = 256;
    }

    public static class StructType implements IBinTalk {
        private String aaa_ = "";
        private int bbb_ = 0;

        public void setAaa_(String aaa_) {
            this.aaa_ = aaa_;
        }

        public String getAaa_() {
            return this.aaa_;
        }

        public void setBbb_(int bbb_) {
            this.bbb_ = bbb_;
        }

        public int getBbb_() {
            return this.bbb_;
        }

        public byte[] serialize(WriterStream... args) {
            WriterStream ws;
            if (args != null && args.length == 1) {
                ws = args[0];
            } else {
                ws = new WriterStream();
            }
            ProtocolWriter.writeString(ws, this.aaa_);
            ProtocolWriter.writeInt(ws, this.bbb_);
            return ws.toByteArray();
        }

        public StructType deserialize(ReaderStream rs) {
            this.aaa_ = ProtocolReader.readString(rs);
            this.bbb_ = ProtocolReader.readInt(rs);
            return this;
        }
    }

    public static class StructBase implements IBinTalk {
        private double double_ = 0;
        private float float_ = 0;
        private long int64_ = 0;
        private long uint64_ = 0;
        private int int32_ = 0;
        private long uint32_ = 0;
        private short int16_ = 0;
        private int uint16_ = 0;
        private byte int8_ = 0;
        private short uint8_ = 0;
        private boolean bool_ = false;
        private EnumName enum_ = EnumName.values()[0];
        private EnumName16 enum16_ = EnumName16.values()[0];
        private StructType struct_ = new StructType();
        private String string_ = "";
        private String string1_ = "";
        private byte[] bin_ = new byte[0];
        private byte[] bin1_ = new byte[0];
        private List<Double> doubleArray_ = new ArrayList<>();
        private List<Float> floatArray_ = new ArrayList<>();
        private List<Long> int64Array_ = new ArrayList<>();
        private List<Long> uint64Array_ = new ArrayList<>();
        private List<Integer> int32Array_ = new ArrayList<>();
        private List<Long> uint32Array_ = new ArrayList<>();
        private List<Short> int16Array_ = new ArrayList<>();
        private List<Integer> uint16Array_ = new ArrayList<>();
        private List<Byte> int8Array_ = new ArrayList<>();
        private List<Short> uint8Array_ = new ArrayList<>();
        private List<Boolean> boolArray_ = new ArrayList<>();
        private List<String> strArray_ = new ArrayList<>();
        private List<String> strArray1_ = new ArrayList<>();
        private List<byte[]> binArray_ = new ArrayList<>();
        private List<byte[]> bin1Array_ = new ArrayList<>();
        private List<EnumName> enumArray_ = new ArrayList<>();
        private List<StructType> structArray_ = new ArrayList<>();

        public void setDouble_(double double_) {
            this.double_ = double_;
        }

        public double getDouble_() {
            return this.double_;
        }

        public void setFloat_(float float_) {
            this.float_ = float_;
        }

        public float getFloat_() {
            return this.float_;
        }

        public void setInt64_(long int64_) {
            this.int64_ = int64_;
        }

        public long getInt64_() {
            return this.int64_;
        }

        public void setUint64_(long uint64_) {
            this.uint64_ = uint64_;
        }

        public long getUint64_() {
            return this.uint64_;
        }

        public void setInt32_(int int32_) {
            this.int32_ = int32_;
        }

        public int getInt32_() {
            return this.int32_;
        }

        public void setUint32_(long uint32_) {
            this.uint32_ = uint32_;
        }

        public long getUint32_() {
            return this.uint32_;
        }

        public void setInt16_(short int16_) {
            this.int16_ = int16_;
        }

        public short getInt16_() {
            return this.int16_;
        }

        public void setUint16_(int uint16_) {
            this.uint16_ = uint16_;
        }

        public int getUint16_() {
            return this.uint16_;
        }

        public void setInt8_(byte int8_) {
            this.int8_ = int8_;
        }

        public byte getInt8_() {
            return this.int8_;
        }

        public void setUint8_(short uint8_) {
            this.uint8_ = uint8_;
        }

        public short getUint8_() {
            return this.uint8_;
        }

        public void setBool_(boolean bool_) {
            this.bool_ = bool_;
        }

        public boolean getBool_() {
            return this.bool_;
        }

        public void setEnum_(EnumName enum_) {
            this.enum_ = enum_;
        }

        public EnumName getEnum_() {
            return this.enum_;
        }

        public void setEnum16_(EnumName16 enum16_) {
            this.enum16_ = enum16_;
        }

        public EnumName16 getEnum16_() {
            return this.enum16_;
        }

        public void setStruct_(StructType struct_) {
            this.struct_ = struct_;
        }

        public StructType getStruct_() {
            return this.struct_;
        }

        public void setString_(String string_) {
            this.string_ = string_;
        }

        public String getString_() {
            return this.string_;
        }

        public void setString1_(String string1_) {
            this.string1_ = string1_;
        }

        public String getString1_() {
            return this.string1_;
        }

        public void setBin_(byte[] bin_) {
            this.bin_ = bin_;
        }

        public byte[] getBin_() {
            return this.bin_;
        }

        public void setBin1_(byte[] bin1_) {
            this.bin1_ = bin1_;
        }

        public byte[] getBin1_() {
            return this.bin1_;
        }

        public void setDoubleArray_(List<Double> doubleArray_) {
            this.doubleArray_ = doubleArray_;
        }

        public List<Double> getDoubleArray_() {
            return this.doubleArray_;
        }

        public void setFloatArray_(List<Float> floatArray_) {
            this.floatArray_ = floatArray_;
        }

        public List<Float> getFloatArray_() {
            return this.floatArray_;
        }

        public void setInt64Array_(List<Long> int64Array_) {
            this.int64Array_ = int64Array_;
        }

        public List<Long> getInt64Array_() {
            return this.int64Array_;
        }

        public void setUint64Array_(List<Long> uint64Array_) {
            this.uint64Array_ = uint64Array_;
        }

        public List<Long> getUint64Array_() {
            return this.uint64Array_;
        }

        public void setInt32Array_(List<Integer> int32Array_) {
            this.int32Array_ = int32Array_;
        }

        public List<Integer> getInt32Array_() {
            return this.int32Array_;
        }

        public void setUint32Array_(List<Long> uint32Array_) {
            this.uint32Array_ = uint32Array_;
        }

        public List<Long> getUint32Array_() {
            return this.uint32Array_;
        }

        public void setInt16Array_(List<Short> int16Array_) {
            this.int16Array_ = int16Array_;
        }

        public List<Short> getInt16Array_() {
            return this.int16Array_;
        }

        public void setUint16Array_(List<Integer> uint16Array_) {
            this.uint16Array_ = uint16Array_;
        }

        public List<Integer> getUint16Array_() {
            return this.uint16Array_;
        }

        public void setInt8Array_(List<Byte> int8Array_) {
            this.int8Array_ = int8Array_;
        }

        public List<Byte> getInt8Array_() {
            return this.int8Array_;
        }

        public void setUint8Array_(List<Short> uint8Array_) {
            this.uint8Array_ = uint8Array_;
        }

        public List<Short> getUint8Array_() {
            return this.uint8Array_;
        }

        public void setBoolArray_(List<Boolean> boolArray_) {
            this.boolArray_ = boolArray_;
        }

        public List<Boolean> getBoolArray_() {
            return this.boolArray_;
        }

        public void setStrArray_(List<String> strArray_) {
            this.strArray_ = strArray_;
        }

        public List<String> getStrArray_() {
            return this.strArray_;
        }

        public void setStrArray1_(List<String> strArray1_) {
            this.strArray1_ = strArray1_;
        }

        public List<String> getStrArray1_() {
            return this.strArray1_;
        }

        public void setBinArray_(List<byte[]> binArray_) {
            this.binArray_ = binArray_;
        }

        public List<byte[]> getBinArray_() {
            return this.binArray_;
        }

        public void setBin1Array_(List<byte[]> bin1Array_) {
            this.bin1Array_ = bin1Array_;
        }

        public List<byte[]> getBin1Array_() {
            return this.bin1Array_;
        }

        public void setEnumArray_(List<EnumName> enumArray_) {
            this.enumArray_ = enumArray_;
        }

        public List<EnumName> getEnumArray_() {
            return this.enumArray_;
        }

        public void setStructArray_(List<StructType> structArray_) {
            this.structArray_ = structArray_;
        }

        public List<StructType> getStructArray_() {
            return this.structArray_;
        }

        @Override
        public byte[] serialize(WriterStream... args) {
            WriterStream ws;
            if (args != null && args.length != 0) {
                ws = args[0];
            } else {
                ws = new WriterStream();
            }
            ProtocolWriter.writeDouble(ws, this.double_);
            ProtocolWriter.writeFloat(ws, this.float_);
            ProtocolWriter.writeLong(ws, this.int64_);
            ProtocolWriter.writeUnsignedLong(ws, this.uint64_);
            ProtocolWriter.writeInt(ws, this.int32_);
            ProtocolWriter.writeUnsignedInt(ws, this.uint32_);
            ProtocolWriter.writeShort(ws, this.int16_);
            ProtocolWriter.writeUnsignedShort(ws, this.uint16_);
            ProtocolWriter.writeByte(ws, this.int8_);
            ProtocolWriter.writeUnsignedByte(ws, this.uint8_);
            ProtocolWriter.writeBoolean(ws, this.bool_);
            ProtocolWriter.writeUnsignedByteEnum(ws, this.enum_);
            ProtocolWriter.writeUnsignedShortEnum(ws, this.enum16_);
            ProtocolWriter.writeStruct(ws, this.struct_);
            ProtocolWriter.writeString(ws, this.string_);
            ProtocolWriter.writeString(ws, this.string1_);
            ProtocolWriter.writeByteArray(ws, this.bin_);
            ProtocolWriter.writeByteArray(ws, this.bin1_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeDouble, this.doubleArray_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeFloat, this.floatArray_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeLong, this.int64Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeUnsignedLong, this.uint64Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeInt, this.int32Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeUnsignedInt, this.uint32Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeShort, this.int16Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeUnsignedShort, this.uint16Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeByte, this.int8Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeUnsignedByte, this.uint8Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeBoolean, this.boolArray_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeString, this.strArray_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeString, this.strArray1_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeByteArray, this.binArray_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeByteArray, this.bin1Array_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeUnsignedByteEnum, this.enumArray_);
            ProtocolWriter.writeArrayList(ws, ProtocolWriter::writeStruct, this.structArray_);
            return ws.toByteArray();
        }

        public StructBase deserialize(ReaderStream rs) {
            this.double_ = ProtocolReader.readDouble(rs);
            this.float_ = ProtocolReader.readFloat(rs);
            this.int64_ = ProtocolReader.readLong(rs);
            this.uint64_ = ProtocolReader.readUnsignedLong(rs);
            this.int32_ = ProtocolReader.readInt(rs);
            this.uint32_ = ProtocolReader.readUnsignedInt(rs);
            this.int16_ = ProtocolReader.readShort(rs);
            this.uint16_ = ProtocolReader.readUnsignedShort(rs);
            this.int8_ = ProtocolReader.readByte(rs);
            this.uint8_ = ProtocolReader.readUnsignedByte(rs);
            this.bool_ = ProtocolReader.readBoolean(rs);
            this.enum_ = EnumName.values()[ProtocolReader.readUnsignedByte(rs)];
            this.enum16_ = EnumName16.values()[ProtocolReader.readUnsignedShort(rs)];
            this.struct_ = ProtocolReader.readStruct(rs, StructType.class);
            this.string_ = ProtocolReader.readString(rs);
            this.string1_ = ProtocolReader.readString(rs);
            this.bin_ = ProtocolReader.readByteArray(rs);
            this.bin1_ = ProtocolReader.readByteArray(rs);
            this.doubleArray_ = ProtocolReader.readArrayList(rs, ProtocolReader::readDouble);
            this.floatArray_ = ProtocolReader.readArrayList(rs, ProtocolReader::readFloat);
            this.int64Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readLong);
            this.uint64Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readUnsignedLong);
            this.int32Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readInt);
            this.uint32Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readUnsignedInt);
            this.int16Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readShort);
            this.uint16Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readUnsignedShort);
            this.int8Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readByte);
            this.uint8Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readUnsignedByte);
            this.boolArray_ = ProtocolReader.readArrayList(rs, ProtocolReader::readBoolean);
            this.strArray_ = ProtocolReader.readArrayList(rs, ProtocolReader::readString);
            this.strArray1_ = ProtocolReader.readArrayList(rs, ProtocolReader::readString);
            this.binArray_ = ProtocolReader.readArrayList(rs, ProtocolReader::readByteArray);
            this.bin1Array_ = ProtocolReader.readArrayList(rs, ProtocolReader::readByteArray);
            ProtocolReader.readArrayList(rs, ProtocolReader::readUnsignedByte).forEach(e -> this.enumArray_.add(EnumName.values()[e]));
            this.structArray_ = ProtocolReader.readStructArrayList(rs, StructType.class);
            return this;
        }
    }
}
